#ifndef GUI_H_
#define GUI_H_

#include <GLUT/glut.h>

#include "glui.h"
#include "application.h"

class GUI {
    public:
        // GLUT callbacks
        static void glutDisplay(void);
        static void glutMouseClick(int button, int state, int x, int y);
        static void glutMouseMotion(int x, int y);
        static void glutReshape(int width, int height);

        // Singleton
        static GUI* getInstance(void);
        
        // Utilities
        void Init(Application *);
        void drawProgramWindow(Application *);
        void setCamera(float posX, float posY, float posZ, 
                float targetX, float targetY, float targetZ);
        void renderGeometry(void);

        ~GUI() {}

    private:
        GUI() {}
        GUI(const GUI&) {}
        static GUI* m_instance;
};

#define gfx GUI::getInstance()

#endif
